package com.tianya.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tianya.domain.entity.Message;
import com.tianya.domain.vo.MessageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface MessageMapper extends BaseMapper<Message> {

    /**
     * 分页查询收件箱消息
     * @param page 分页参数
     * @param userId 用户ID
     * @param keyword 关键词搜索
     * @param isRead 是否已读
     * @return 消息分页列表
     */
    IPage<MessageVO> selectInboxMessages(
            Page<?> page,
            @Param("userId") Long userId,
            @Param("keyword") String keyword,
            @Param("isRead") Boolean isRead);

    /**
     * 查询与指定用户的消息历史
     * @param userId 当前用户ID
     * @param otherUserId 对方用户ID
     * @return 消息历史列表
     */
    List<MessageVO> selectMessageHistory(
            @Param("userId") Long userId,
            @Param("otherUserId") Long otherUserId);

    /**
     * 查询消息详情，包含回复消息信息
     * @param messageId 消息ID
     * @return 消息详情
     */
    MessageVO selectMessageDetail(@Param("messageId") Long messageId);

    /**
     * 统计用户未读消息数
     * @param userId 用户ID
     * @return 未读消息数
     */
    Long countUnreadMessages(@Param("userId") Long userId);

    List<MessageVO> selectRepliesByMessageId(@Param("messageId") Long messageId);
}